home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / XML_CSSML / CSSML / xslt.php < prev   
PHP Script  |  2004-03-24  |  4KB  |  130 lines

  1. <?php
  2. // {{{ license
  3.  
  4. // +----------------------------------------------------------------------+
  5. // | PHP version 4.0                                                      |
  6. // +----------------------------------------------------------------------+
  7. // | Copyright (c) 1997-2002 The PHP Group                                |
  8. // +----------------------------------------------------------------------+
  9. // | This source file is subject to version 2.0 of the PHP license,       |
  10. // | that is bundled with this package in the file LICENSE, and is        |
  11. // | available at through the world-wide-web at                           |
  12. // | http://www.php.net/license/2_02.txt.                                 |
  13. // | If you did not receive a copy of the PHP license and are unable to   |
  14. // | obtain it through the world-wide-web, please send a note to          |
  15. // | license@php.net so we can mail you a copy immediately.               |
  16. // +----------------------------------------------------------------------+
  17. // | Authors: Dan Allen <dan@mojavelinux.com>                             |
  18. // +----------------------------------------------------------------------+
  19.  
  20. // $Id: xslt.php,v 1.1 2002/05/20 22:04:47 dallen Exp $
  21.  
  22. // }}}
  23. // {{{ description
  24.  
  25. // XML_CSSML is a CSSML to CSS xslt parser
  26.  
  27. // }}}
  28.  
  29. // {{{ class XML_CSSML_xslt
  30.  
  31. /**
  32.  * The XML_CSSML_xslt is a container class which
  33.  * provides the sablotron xsl functions to parse a CSSML 
  34.  * document into a stylesheet with the ability to output 
  35.  * to a file or return
  36.  *
  37.  * @author   Dan Allen <dan@mojavelinux.com>
  38.  * @version  Revision: 0.1
  39.  * @access   public
  40.  * @package  XML_CSSML
  41.  */
  42.  
  43. // }}}
  44. class XML_CSSML_xslt extends XML_CSSML {
  45.     // {{{ properties
  46.  
  47.     /**
  48.      * The sabltron extension can use xml strings as arguments for the
  49.      * processor, but must do so when calling xslt_process.  This variable
  50.      * holds those parameters.
  51.      * @var array $arguments
  52.      */
  53.     var $arguments = array();
  54.  
  55.     // }}}
  56.     // {{{ constructor
  57.  
  58.     function XML_CSSML_xslt($in_CSSML = null, $in_type = 'string', $in_params = null)
  59.     {
  60.         $this->loaded = false;
  61.         if (!is_null($in_CSSML)) {
  62.             $this->load($in_CSSML, $in_type);
  63.         }
  64.  
  65.         if (!is_null($in_params)) {
  66.             $this->setParams($in_params);
  67.         }
  68.  
  69.         $this->stylesheetDoc = dirname(__FILE__) . '/xslt.xsl';
  70.     }
  71.  
  72.     // }}}
  73.     // {{{ process()
  74.  
  75.     // I need some error checking in here
  76.     function process()
  77.     {
  78.         if (parent::isError($process = parent::process())) {
  79.             return $process;
  80.         }
  81.  
  82.         // Prepare the params for passing to the stylesheet
  83.         $params = array(
  84.             'filter'        => $this->filter,
  85.             'browser'       => $this->browser,
  86.             'comment'       => $this->comment,
  87.         );
  88.  
  89.         $xh = xslt_create();
  90.  
  91.         $result = xslt_process($xh, $this->CSSMLDoc, $this->stylesheetDoc, null, $this->arguments, $params);
  92.  
  93.         if ($this->output != 'STDOUT') {
  94.             $fp = fopen($this->output, 'w');
  95.             fwrite($fp, $result);
  96.             fclose($fp);
  97.             $result = true; 
  98.         }
  99.         
  100.         return $result;
  101.     }
  102.  
  103.     // }}}
  104.     // {{{ load()
  105.  
  106.     // I need some more error checking in here
  107.     function load($in_CSSML, $in_type = 'string')
  108.     {
  109.         if (parent::isError($load = parent::load())) {
  110.             return $load;
  111.         }
  112.  
  113.         if ($in_type == 'file' && @file_exists($in_CSSML)) {
  114.             $this->CSSMLDoc = $in_CSSML;
  115.         }
  116.         elseif ($in_type == 'string' && is_string($in_CSSML)) {
  117.             $this->CSSMLDoc = 'arg:/_xml';
  118.             $this->arguments = array('/_xml' => $in_CSSML);
  119.         }
  120.         else {
  121.             return PEAR::raiseError(null, XML_CSSML_INVALID_DATA, null, E_USER_WARNING, "Request data: $in_CSSML", 'XML_CSSML_Error', true);
  122.         }
  123.  
  124.         $this->loaded = true;
  125.     }
  126.  
  127.     // }}}
  128. }
  129. ?>
  130.